package cn.demoncat.util.websocket.base;

import cn.demoncat.util.lang.entity.Result;
import cn.demoncat.util.websocket.entity.UserSession;
import cn.demoncat.util.websocket.util.WebSocketUtil;

import javax.websocket.Session;

/**
 * WS业务处理（实现类须声明BeanName）
 * 
 * @author 延晓磊
 *
 * @since 2020年5月18日
 */
public interface BaseWsService {

	/**
	 * 在客户端初次连接时触发
	 * 
	 * @param session
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	default void onOpen(UserSession session) {
		
	}

	/**
	 * 在客户端断开连接时触发
	 * 
	 * @param session
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	default void onClose(UserSession session) {
		
	}

	/**
	 * 收到客户端消息后
	 * 
	 * @param session
	 * @param message	消息
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	void onMessage(UserSession session, String message);

	/**
	 * 主动关闭连接
	 * 
	 * @param session	会话标识
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	default void close(String session) {
		
	}
	
	/**
	 * 主动发送消息
	 * 
	 * @param session	会话标识
	 * @param message	消息
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	default void send(String session, String message) {
		
	}

	/**
	 * 主动发送消息
	 *
	 * @param session	会话
	 * @param message	消息
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 */
	default boolean send(Session session, Result message) {
		return WebSocketUtil.send(session, message);
	}
}
